C++ ifstream 到 char *
全部标签 我想知道是否有办法在C++中重置eof状态? 最佳答案 对于文件,您可以搜索到任何位置。例如,要倒回到开头:std::ifstreaminfile("hello.txt");while(infile.read(...)){/*...*/}//etcetcinfile.clear();//clearfailandeofbitsinfile.seekg(0,std::ios::beg);//backtothestart!如果您已经阅读到最后,则必须按照@JerryCoffin的建议使用clear()重置错误标志。
以下程序尝试使用第一个字符串和指向第一个字符串中间的指针构造第二个字符串:#includeintmain(){std::stringsrc="helloworld";constchar*end=&src[5];std::stringdest(src.data(),end);}在C++14及更早版本中,这有效。但是inC++17thecallfails:error:nomatchingfunctionforcallto‘std::__cxx11::basic_string::basic_string(char*,constchar*&)’std::stringdest(src.data(
我想将文本文件的内容加载到vector(或任何字符输入迭代器,如果可能的话)。目前我的代码如下所示:std::vectorvec;std::ifstreamfile("test.txt");assert(file.is_open());while(!(file.eof()||file.fail())){charbuffer[100];file.read(buffer,100);vec.insert(vec.end(),buffer,buffer+file.gcount());}我不喜欢手动使用缓冲区(为什么是100个字符?为什么不是200、25或其他什么?),或者这需要大量的行。代码看
我遇到了一个奇怪的问题,我想知道它为什么会这样。我有一个类,其中有一个返回std::string的成员函数。我的目标是将这个string转换为constchar*,所以我做了以下constchar*c;c=robot.pose_Str().c_str();//isthissafe??????udp_slave.sendData(c);问题是我在大师方面得到了一个奇怪的角色。但是,如果我执行以下操作constchar*c;std::stringdata(robot.pose_Str());c=data.c_str();udp_slave.sendData(c);我得到了我所期望的。我的问
如何获得使用ifstream::read函数读取的字节数?Tell说文件是10个字节,windows说它也是10个字节,但文件中只有8个字节,所以当我读取它时,它只读取8个字节,所以我最终得到了太大的a缓冲区。 最佳答案 您可以调用gcount()了解详情阅读后立即播放。ifs.read(buf,sizeofbuf);std::streamsizebytes=ifs.gcount(); 关于c++-ifstream,读取的字节数?,我们在StackOverflow上找到一个类似的问题:
我声明了一个boost::variant,它接受三种类型:string、bool和int。以下代码显示我的变体接受constchar*并将其转换为bool。boost::variant接受和转换不在其列表中的类型是正常行为吗?#include#include"boost/variant/variant.hpp"#include"boost/variant/apply_visitor.hpp"usingnamespacestd;usingnamespaceboost;typedefvariantMyVariant;classTestVariant:publicboost::static_
我有以下将打开一个文件进行阅读。但是,我想检查以确保文件已成功打开,因此我使用失败来查看是否已设置标志。但是,我不断收到以下错误:我是C++新手,因为我来自C。所以不确定我是否理解这个错误:cannotcallmemberfunction‘boolstd::basic_ios::fail()const[with_CharT=char,_Traits=std::char_traits]’withoutobject代码:intdevices::open_file(std::string_file_name){ifstreaminput_stream;input_stream.open(_f
我正在学习C++中的指针。例如在初始化指针时,double*pvalue1=nullptr;//okaychar*pvalue2=nullptr;//onlythissays,"0x00000000"(inthewatchwindowofVisualC++2010)int*pvalue3=nullptr;//okay为什么只有char类型指针给出BadPtr而其他指针类型没有?我现在不关心指向的值。我没有取消引用它们(这就是上面出现这些错误的原因)。我只是在查看这三个指针的监window口。 最佳答案 对于大多数指针类型,Visua
这在C++中是可能的:constchar*ch="hello";但是这样的事情是不可能的:int*i={1,2,3};char*ch和int*i都是纯指针。为什么char*可以分配多个char,而int*不能分配多个int?我知道我们可以使用intx[]={1,2,3};但这不是问题。 最佳答案 constchar*ch="hello";有点像staticconstcharstring_literal[]={'h','e','l','l','o','\0'};constchar*ch=&string_literal[0];除了每个相
我想从文本文件中读取图形邻接信息并将其存储到vector中。文件有任意行数每一行有任意数量的以'\n'结尾的整数例如,Firstline:014Secondline:10432Thridline:213Fourthline:3124Fifthline:4013如果我使用getline()一次读取一行,我如何解析该行(因为每行都有可变数量的整数)?有什么建议吗? 最佳答案 标准行读成语:#include#include#include#includestd::ifstreaminfile("thefile.txt");std::str